Amazon Linux 2023からRDS MySQLに接続するときにMariaDBを使う方法
こんにちは。CX事業本部Delivery部のakkyです。
以前、Amazon Linux 2023でMySQL Clientを使う記事を掲載しました。
多くの方にご覧いただいていますが、この方法で注意していただきたい点として、MySQLはAmazon Linux 2023のリポジトリ外のパッケージとなるため、AWSからのサポートが得られないということがあります。
AWSでは、RDS MySQLへの接続にはMariaDBを使用することをドキュメントで案内しています。
MariaDBは、クライアントプロトコルに関してはMySQLと互換性があることがドキュメントに記載されています。
また、認証プラグインに関しても、クライアント側でSHA-256がサポートされていますので、MySQL8.0への接続も問題ありません。
インストール方法
次のコマンドでインストールできます。
sudo dnf -y install mariadb105
RDSインスタンスへの接続
mysql
をmariadb
に置き換えて次のコマンドで接続できます。usernameとhostnameを置き換えてください。
mariadb -u username -p -h hostname
SSLを強制していた場合
RDS MySQLで、パラメータグループでrequire_secure_transport=1
としている場合、またはユーザーごとの設定をしている場合には、上記コマンドで接続するとエラーになってしまいます。
これは、SSLでの接続がデフォルトでは無効になっているためです。MySQLでは勝手にSSL接続されるためハマりました。
$ mariadb -u admin -p -h XXXXXXXX.ap-northeast-1.rds.amazonaws.com Enter password: ERROR 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.
エラーが発生した場合には、--ssl
というオプションを付けて実行してください。
$ mariadb -u admin -p -h XXXXXXXX.ap-northeast-1.rds.amazonaws.com --ssl
なお、この場合には、サーバ証明書の検証が行われません。
証明書を検証したい場合
証明書を検証したい場合は、まずホームディレクトリに.my.cnf
というファイルを作成し、ssl-verify-server-cert=true
とします。
cat << EOF > ~/.my.cnf [client-mariadb] ssl=true ssl-verify-server-cert=true EOF
次にRDSのCA証明書をダウンロードしてインストールします。
sudo curl -O --output-dir /etc/pki/ca-trust/source/anchors/ https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem sudo update-ca-trust
この操作を行えば、--ssl
を指定しなくてもSSLが使用され、証明書が検証されます。
$ mariadb -u admin -p -h XXXXXXXX.ap-northeast-1.rds.amazonaws.com
以上